/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucue.ptc.gco.dao;

import edu.ucue.ptc.gco.mdl.DetallePedido;
import edu.ucue.ptc.gco.mdl.Visita;
import edu.ucue.ptc.gco.util.AtributoInvalidoException;
import edu.ucue.ptc.gco.util.ValidarAtributoUtil;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.swing.JOptionPane;

/**
 *
 * @author fabian
 */
//recibir un list  de productos y mandar a verificar sl stock
//enviar JOptionPane si falta alguno en el  
//
@Stateless
public class DetallePedidoDAO implements DetallePedidoDAOLocal {

    @PersistenceContext(unitName="edu.ucue.gped_gestionpedidosee-ejb_ejb_1.0-SNAPSHOTPU")    
    private EntityManager entityManager;
   
    @Override
    public void crear(DetallePedido pedido) {
        
        try {
            pedido.setIdDetalle(11);
            pedido.setCantidad(5);
            pedido.setIva(false);
            pedido.setPrecio(30);
            pedido.setTotal(150);
            ValidarAtributoUtil.validarStringNuloVacio("tipoRuta", pedido.getIdDetalle()+"");
            
        } catch (AtributoInvalidoException ex) {
            Logger.getLogger(RutaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        entityManager.persist(pedido);
    }

    @Override
    public void actualizar(DetallePedido pedido) {
        entityManager.merge(pedido);
    }

    @Override
    public void eliminar(DetallePedido pedido) {
       
        DetallePedido obtenerPorId = obtenerPorId(pedido.getIdDetalle());
        entityManager.remove(obtenerPorId);
    }
/*
    public void eliminarc(DetallePedido idPedido) {
        DetallePedido pedido=obtenerPorId(idPedido);
        eliminar(pedido);
    }*/

    @Override
    public List<DetallePedido> listarTodos() {
        Query query = entityManager.createQuery("select c from DetallePedido c");
        
        return query.getResultList();
    }
      @Override
    public void ValidaStockPedido(List<DetallePedido> lista) {
     
          for (int i=0;i<lista.size();i++){
              int codiprod = lista.get(i).getProducto().getIdProducto();
              int cantidad = lista.get(i).getCantidad();
               Query query = entityManager.createQuery("select cantidadActual from Lote where idProducto ='"+ codiprod+"';");
               if (cantidad < Integer.parseInt(query.getResultList().get(0).toString())){
               JOptionPane.showMessageDialog(null, "NO hay suficiente stock para el pedido del producto  "+lista.get(i).getProducto().getNombreProducto()+"existencias :"+query.getResultList().get(0));
               }
          }
    }
    
    

    @Override
    public DetallePedido obtenerPorId(int idPedido) {
 
        Query query = entityManager.createQuery("select c from DetallePedido c "
                + "where c.idDetalle = :pidPedido");
        query.setParameter("pidPedido", idPedido);
        query.setMaxResults(1);
        List<DetallePedido> pedido = query.getResultList();
        if (pedido == null || pedido.isEmpty()) {
            return null;
        }
            
        return pedido.get(0);
    }

}
